#coding:utf8


from pyspark.sql import SparkSession

if __name__ == '__main__':
    # 构建SparkSession执行环境入口对象
    spark = SparkSession.builder.\
        appName("test_parque").\
        master("local[*]").\
        getOrCreate()
    sc = spark.sparkContext

    # 清洗数据
    df = spark.read.format("csv").\
        option("sep",";").\
        option('header',True).\
        option('encoding','utf-8'). load("../data/input/sql/people.csv")

    # # 1.对重复的数据去重
    # df.dropDuplicates().show()
    #
    # # 2.对重复的数据去重，指定重复数据的依据列
    # df.dropDuplicates(['age','job']).show()
    #
    # # 对缺失的数据进行过滤
    # df.dropna().show()
    # # 最少满足3个有效列，否则就删除数据
    # df.dropna(thresh=3).show()
    # # 只对指定的列进行判断，并且必须需要有2个有效列
    # df.dropna(thresh=2,subset=['name','age']).show()

    # 对缺失的数据填充缺省值
    df.fillna('lost').show()
    # 对指定列填充缺省值
    df.fillna(subset=['job'],value='unknown').show()
    # 设定字典对所有列进行缺省值填充
    df.fillna({"age":1,"name":"nobady","job":"no_job"}).show()